package com.buba.service;
import com.baomidou.mybatisplus.extension.service.IService;
import common.R;
import entity.salary.Social;
import entity.salary.dto.InsuranceDto;
import entity.salary.dto.accumulationDto;
import entity.salary.dto.socialDto;
import entity.salary.vo.socialDetailedVo;
import entity.salary.vo.socialVo;
import entity.staff.dto.saveAccountDto;
import entity.staff.dto.withSocialPerDto;
import utils.PageResult;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author beisheng
 * @since 2023-03-14
 */
public interface SocialService extends IService<Social> {

    /* *
     * @Author: beisheng
     * @Descriprion: 分页查询社保方案
     * @Date: 2023/3/15 19:00
     * @Return: common.R
     * @Param: []
     */

    PageResult findAllSocial(socialDto socialDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据社保方案ID查询当前社保方案关联的人员信息
     * @Date: 2023/3/16 10:47
     * @Return: common.R
     * @Param: [socialPerDto]
     */

    PageResult withSocialPerDto(withSocialPerDto socialPerDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 判断方案是否存在
     * @Date: 2023/3/16 15:29
     * @Return: common.R
     * @Param: [schemeName]
     */

    boolean judgeScheme(String schemeName);

    /* *
     * @Author: beisheng
     * @Descriprion: 添加社保方案
     * @Date: 2023/3/16 18:31
     * @Return: common.R
     * @Param: [insuranceDto]
     */

    void insertSocial(InsuranceDto insuranceDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 添加人员到社保方案
     * @Date: 2023/3/17 9:52
     * @Return: common.R
     * @Param: [saveAccountDto]
     */

    void saveAccuntToSocial(saveAccountDto saveAccountDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 删除方案,并删除方案配置信息
     * @Date: 2023/3/17 10:26
     * @Return: common.R
     * @Param: [id]
     */

    void removeSocial(Integer id);

    /* *
     * @Author: beisheng
     * @Descriprion: 批量删除方案,并删除关联方案信息
     * @Date: 2023/3/17 10:29
     * @Return: common.R
     * @Param: [ids]
     */

    R removeSocialByIds(List<Integer> ids);

    /* *
     * @Author: beisheng
     * @Descriprion: 更改社保方案状态
     * @Date: 2023/3/17 10:43
     * @Return: common.R
     * @Param: [id]
     */

    void updateSocialStatus(Map<String, Object> map);

    /* *
     * @Author: beisheng
     * @Descriprion: 修改社保方案及色环保方案配置信息及关联人员
     * @Date: 2023/3/17 11:21
     * @Return: common.R
     * @Param: [insuranceDto]
     */

    void updateSocial(InsuranceDto insuranceDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据选择的社保方案查询缴费明细
     * @Date: 2023/3/20 19:55
     * @Return: common.R
     * @Param: [socilaId]
     */

    List<socialDetailedVo> socialDetailed(Integer socilaId);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据社保ID查询关联人员和关联险种信息
     * @Date: 2023/4/6 10:47
     * @Return: common.R
     * @Param: [socialId]
     */

    accumulationDto selSocialAndPeopleAndSocialFile(Integer socialId);
}
